<?php

lt_include(PLOG_CLASS_PATH.'class/action/admin/adminaction.class.php');
lt_include(PLOG_CLASS_PATH.'class/view/admin/adminplugintemplatedview.class.php');
lt_include(PLOG_CLASS_PATH.'plugins/googleadsense/class/view/plugingoogleadsenseconfigview.class.php');

// updates the plugin configuration
class PluginGoogleAdsenseUpdateConfigAction extends AdminAction
{
    var $_pluginEnabled;
    var $_client;
    var $_contentEnabled;
    var $_contentWidth;
    var $_contentHeight;
    var $_contentFormat;
    var $_contentType;
    var $_contentChannel;

	function PluginGoogleAdsenseUpdateConfigAction($actionInfo, $request)
	{
		$this->AdminAction($actionInfo, $request);
	}

	function validate()
	{
        $errorMessages = array();
		$blogSettings = $this->_blogInfo->getSettings();
		$this->_pluginEnabled = $this->_request->getValue('pluginEnabled');
        $this->_pluginEnabled = ($this->_pluginEnabled != '');

		$this->_client = $this->_request->getValue('client') ? $this->_request->getValue('client') : $blogSettings->getValue('plugin_googleadsense_client');
		if ($this->_pluginEnabled && empty($this->_client)) {
            $errorMessages[] = 'googleadsense_error_client';
			$isError = true;
		}

		$this->_contentEnabled = $this->_request->getValue('contentEnabled');
		$this->_contentWidth = $this->_request->getValue('contentWidth');
		$this->_contentHeight = $this->_request->getValue('contentHeight');
		$this->_contentFormat = $this->_request->getValue('contentFormat');
		$this->_contentType = $this->_request->getValue('contentType');
		$this->_contentChannel = $this->_request->getValue('contentChannel');


		if (count($errorMessages) > 0) {
            $this->_view = new PluginGoogleAdsenseConfigView($this->_blogInfo);
			$allerror='';
			foreach ($errorMessages as $error) {
				$allerror .= $this->_locale->tr($error).'<br />';
			}
            $this->_view->setErrorMessage($this->_locale->tr($allerror));
            $this->setCommonData();
            return false;
        }

        return true;
    }

	function perform()
	{
        // // update the plugin configurations to blog setting
		$blogSettings = $this->_blogInfo->getSettings();
        $blogSettings->setValue('plugin_googleadsense_enabled', $this->_pluginEnabled);
        $blogSettings->setValue('plugin_googleadsense_client', $this->_client);
        $blogSettings->setValue('plugin_googleadsense_content_width', $this->_contentWidth);
        $blogSettings->setValue('plugin_googleadsense_content_height', $this->_contentHeight);
        $blogSettings->setValue('plugin_googleadsense_content_format', $this->_contentFormat);
        $blogSettings->setValue('plugin_googleadsense_content_type', $this->_contentType);
        $blogSettings->setValue('plugin_googleadsense_content_channel', $this->_contentChannel);

        $this->_blogInfo->setSettings($blogSettings);

        // save the blogs settings
		$blogs = new Blogs();
        if (!$blogs->updateBlog($this->_blogInfo)) {
            $this->_view = new PluginStickyPostsConfigView($this->_blogInfo);
            $this->_view->setErrorMessage($this->_locale->tr('error_updating_settings'));
            $this->setCommonData();
            return false;
        }

		// if everything went ok...
        $this->_blogInfo->setSettings($blogSettings);
        $this->_session->setValue('blogInfo', $this->_blogInfo);
        $this->saveSession();

		$this->_view = new PluginGoogleAdsenseConfigView($this->_blogInfo);
		$this->_view->setSuccessMessage($this->_locale->tr('googleadsense_settings_saved_ok'));
		$this->setCommonData();

		// clear the cache
		CacheControl::resetBlogCache($this->_blogInfo->getId());

        return true;
	}
}

?>
